import logging
import os
from common.Logger import logger
import pytest
from excel.ReaderExecl  import get_reader
from keywords.appkeys import  App
# from keywords.interkeys import Inter


class Conf:
    def __init__(self):

        self.feature="项目分组"
        self.feature_idx=0
        self.cases=[]
        self.story = '模块'
        self.s_idx=1
        self.c_idx=1
        self.app=App()
        # self.inter=Inter()

    def runAppCase(self,casefile=''):

        reader=get_reader(casefile)
        #读取每个sheet表的表名然后遍历
        sheetnames=reader.get_sheets()
        for sheet in sheetnames:
            #项目名称等于表名称
            self.feature=sheet
            #项目序号+1
            self.feature_idx+=1
            # logging.info(self.feature_idx,self.feature)
            #读取某个表的行，存进列表lines
            reader.set_sheets(sheet)
            lines=reader.readline()
            #定义空列表
            case=[]
            #遍历列表lines的长度
            self.story_idx = 0
            for i in range(1,len(lines)):
                #把每一行存进line列表
                line=lines[i]
                # print(line)
                #如果第一格存在，就是分组信息
                if len(line[0])>1:
                    #如果case存在，可能刚开始遍历，说明这case是上一个模块下的case，需要存进cases然后运行
                    if case:
                        self.cases.append(case)
                        self.__run_pytest()
                        #运行后清空case
                        case=[]
                    #模块名称等于第一格
                    self.story=line[0]
                    #模块序号加1
                    self.story_idx+=1
                #如果第二格存在，说明是测试用例名称
                elif len(line[1])>0:
                    #如果cese存在，说明是上一个测试用例的内容，需要存进cases
                    if case:
                        self.cases.append(case)
                        #清空cese内容
                        case=[]
                    #如果case不存在，说明是新的测试用例，存进case
                    case.append(line)
                #如果第一格和第二个都不存在，说明是下一步操作，存进case
                else:
                    case.append(line)
            #如果case存在，存进ceses
            if case:
                self.cases.append(case)
            #如果ceses存在，就运行
            if self.cases:
                logging.info(self.cases)
                self.__run_pytest()
        self.s_idx+=1
        os.rename('./ddt/test_%s_%s.py'%(self.s_idx-1,self.c_idx-1),'./ddt/test_App.py')
        # self.obj.quit()

    def __run_pytest(self):
        if self.c_idx==1:
            os.rename('./ddt/test_App.py','./ddt/test_1_1.py')
        else:
            try:
                os.rename('./ddt/test_%s_%s.py'%(self.s_idx,self.c_idx-1),
                          './ddt/test_%s_%s.py'%(self.s_idx,self.c_idx))
            except:
                os.rename('./ddt/test_%s_%s.py'%(self.s_idx-1,self.c_idx-1),
                          './ddt/test_%s_%s.py'%(self.s_idx,self.c_idx))

        pytest.main(['-s','./ddt/test_%s_%s.py'%(self.s_idx,self.c_idx),'--alluredir','Appresult'])
        self.c_idx+=1
        self.cases.clear()

conf = Conf()


if __name__ == '__main__':
    conf=Conf()
    # conf.obj.attachshoot()
    # conf.runAppCase('../lib/一手app-test.xls')

